home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / lib / nessus / plugins / rh_inetd.nasl < prev    next >
Text File  |  2005-01-14  |  3KB  |  168 lines

  1. #
  2. # This script was written by Renaud Deraison <deraison@cvs.nessus.org>
  3. #
  4. # Script audit and contributions from Carmichael Security <http://www.carmichaelsecurity.com>
  5. #      Erik Anderson <eanders@carmichaelsecurity.com>
  6. #      Added BugtraqID and CVE
  7. #
  8. # See the Nessus Scripts License for details
  9. #
  10. #
  11.  
  12. if(description)
  13. {
  14.    script_id(11006);
  15.    script_bugtraq_id(2395);
  16.    script_version ("$Revision: 1.8 $");
  17.    script_cve_id("CVE-2001-0309");
  18.    name["english"] = "RedHat 6.2 inetd";
  19.    script_name(english:name["english"]);
  20.  
  21.    desc["english"] = "
  22. The remote host has a bug in its 'inetd' server. 'inetd' is the
  23. 'internet super-server' and is in charge of managing multiple sub-servers
  24. (like telnet, ftp, chargen, and more).
  25.  
  26. There is a bug in the inetd server that comes with RedHat 6.2, which allows 
  27. an attacker to prevent it from working completely by forcing it to consume
  28. system resources.
  29.  
  30. Solution : Upgrade to inetd-0.16-7
  31. Risk factor : Medium";
  32.  
  33.  
  34.    script_description(english:desc["english"]);
  35.  
  36.    summary["english"] = "Stalls the remote inetd";
  37.    script_summary(english:summary["english"]);
  38.  
  39.    script_category(ACT_GATHER_INFO);
  40.  
  41.    script_copyright(english:"This script is Copyright (C) 2002 Renaud Deraison");
  42.    script_family(english:"Misc.", francais:"Divers");
  43.    script_require_ports(7,9,13,19,23,37);
  44.    script_dependencies("find_service.nes");
  45.    script_timeout(0);
  46.    exit(0);
  47. }
  48.  
  49.  
  50. #
  51. # The code starts here
  52. include("telnet_func.inc");
  53. include("global_settings.inc");
  54.  
  55. do_check = thorough_tests;
  56.  
  57.   ret[0] = 0;
  58.   n = 0;
  59.  
  60.   if(get_port_state(7))
  61.   {
  62.     soc = open_sock_tcp(7);
  63.     if(soc){
  64.       close(soc);
  65.       ret[n] = 7;
  66.       n = n + 1;
  67.     }
  68.   }
  69.  
  70.   if(get_port_state(9))
  71.   {
  72.     soc = open_sock_tcp(9);
  73.     if(soc){
  74.       close(soc);
  75.       ret[n] = 9;
  76.       n = n + 1;
  77.     }
  78.   }
  79.  
  80.   if(get_port_state(13))
  81.   {
  82.     soc = open_sock_tcp(13);
  83.     if(soc){
  84.       close(soc);
  85.       ret[n] = 13;
  86.       n = n + 1;
  87.     }
  88.   }
  89.  
  90.   if(get_port_state(19))
  91.   {
  92.     soc = open_sock_tcp(19);
  93.     if(soc){
  94.       close(soc);
  95.       ret[n] = 19;
  96.       n = n + 1;
  97.     }
  98.   }
  99.   if(get_port_state(37))
  100.   {
  101.     soc = open_sock_tcp(37);
  102.     if(soc){
  103.       close(soc);
  104.       ret[n] = 37;
  105.       n = n + 1;
  106.     }
  107.   }
  108.  
  109. if(!n)exit(0);
  110.  
  111.  
  112. if(!do_check)
  113. {
  114.  port = get_kb_item("Services/telnet");
  115.  if(!port) port = 23;
  116.  
  117.  if(!get_port_state(port))exit(0);
  118.  buf = get_telnet_banner(port: port);
  119.  if (buf)
  120.  {
  121.   if("Red Hat Linux release 6.2" >< buf)
  122.   {
  123.   report = string("
  124. There is a bug in the inetd server that comes with
  125. RedHat 6.2, which allows an attacker to prevent it
  126. from working completely by forcing it to consume
  127. system resources.
  128.  
  129. *** As the banner was used to determine this vulnerability, 
  130. *** this might be a false positive
  131.  
  132. Solution : Upgrade to inetd-0.16-7
  133. Risk factor : Medium");
  134.    security_warning(port:23,
  135.                data:report);
  136.   }
  137.  }
  138.  exit(0);
  139. }
  140.  
  141.  
  142.  
  143.  
  144. for(i=0;i<1500;i=i+n)
  145. {
  146.  #
  147.  # We *must* sleep 3 seconds between each connection,
  148.  # or else inetd will close the port
  149.  #
  150.   sleep(3);
  151.   for(j=0;j<n;j=j+1)
  152.   {
  153.   soc = open_sock_tcp(ret[j]);
  154.   
  155.   if(!(ret[j] == 9))
  156.   {
  157.    send(socket:soc, data:"foo\r\n");
  158.    r = recv(socket:soc, length:5);
  159.    if(!r){
  160.        security_warning(ret[j]);
  161.     exit(0);
  162.     }
  163.   }
  164.   close(soc);
  165.   }
  166. }
  167.